package br.com.edoc.controller.listagem;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.com.edoc.entidade.Cidade;
import br.com.edoc.entidade.UF;

import br.com.edoc.excecoes.ExceptionApplication;
import br.com.edoc.gerentes.GerenteCadastro;
@ManagedBean(name="listagemCidade")
@SessionScoped

public class ListagemCidadeController extends ListagemPadraoController {
	/**
	 * 
	 */
	private static final long serialVersionUID = 3055969046313174184L;
	private List<Cidade> lista;
	
	private List<UF> listaUF;
	
	private UF uf;
	public void entidadeSelecionada(){
		getOuvinteSelecao().selecaoFeita(getQuery());		
	}
	@Override
	public String getNome() {
		// TODO Auto-generated method stub
		return "listagemCidade";
	}

	@Override
	public void acaoPesquisar() {
		// TODO Auto-generated method stub
		setLista(null);
	}

	public void onChangeUF(){
		setLista(null);
	}
	public List<Cidade> getLista() {
		if(lista == null){
			GerenteCadastro gc = getAtendente().chamaGerenteCadastro();
			if(getUf().getId()!=null && getUf().getId()!=0){
				((Cidade)getQuery()).setUf(getUf());
			}
			try {
				setLista(gc.obterListaEntidade(Cidade.class, getQuery(), 1000));
			} catch (ExceptionApplication e) {
				// TODO Auto-generated catch block
				setLista(new ArrayList<Cidade>());
				addErroMessage(e.getMessage());
			}
		}
		return lista;
	}

		public void setLista(List<Cidade> lista) {
			this.lista = lista;
	}
		public List<UF> getListaUF() {
			if(listaUF == null){
				try {
					listaUF = getAtendente().chamaGerenteCadastro().obterListaEntidade(UF.class, new UF(),"sigla");
				} catch (ExceptionApplication e) {
					// TODO Auto-generated catch block
					setListaUF(new ArrayList<UF>());
					addErroMessage(e);
				}
				
			}
			return listaUF;
		}
		public void setListaUF(List<UF> listaUF) {
			this.listaUF = listaUF;
		}
		public UF getUf() {
			if(uf == null){
				uf = new UF();
			}
			return uf;
		}
		public void setUf(UF uf) {
			this.uf = uf;
		}

}
